import br.com.nooclix.salon.ui.dto.product.ProductTO;
import br.com.nooclix.salon.ui.util.Utilitys;
import br.com.nooclix.salon.ui.util.WindowsMessage;

import mx.controls.Alert;
import mx.controls.TextInput;
import mx.events.CloseEvent;
//Aqui são todos os estados da tela, todos os funcionamentos estão listados aqui
//ProductTO é uma classe do tipo ActionScript que servirá de conexão com a aplicação java [Bindable]
protected var product:ProductTO;

protected var bySearch:Boolean = false;
//Essa fincionalidade é chamada pelo window, no campo <mx:Button>
public function save():void{
	 
	product = new ProductTO();
	product.name = fieldName.text;
	product.percentage = Utilitys.toDoublePercentage(fieldPercentage.text);
	product.value = Utilitys.toDouble(fieldValue.text);
	if(product.name == null){
		WindowsMessage.alarm("Informe o nome do serviço!");
		return;
	}
	if(product.value == 0.00){
		WindowsMessage.alarm("Informe o valor do produto!");
		return;
	}
	//Aqui ele manda o objeto product para o método persist do <mx:RemoteObject> no ProductWindow.mxml
	productRemote.persist(product);
	
}
public function productUpdate():void{
	
	product.name = fieldName.text;
	product.percentage = Utilitys.toDoublePercentage(fieldPercentage.text);
	product.value = Utilitys.toDouble(fieldValue.text);
	productRemote.update(product);
}

private function findByName():void{
	//Recupera o valor nome do campo fieldSearch do ProductWindow
	productRemote.findByName(fieldSearch.text);
}

private function removeProduct():void{
	if(gridProduct.selectedItem == null){
		//Mostra uma mensagem na tela, caso não tenha nenhum produto selecionado
		WindowsMessage.alarmWithTitle("Ops, selecione um produto para poder excluir.","Exclusão");
		productRemote.remove(product);
		return;
	}
	var pro:ProductTO = gridProduct.selectedItem as ProductTO;
	
	WindowsMessage.question("Deseja excluir o produto "+pro.name, "Deleção", function(event:CloseEvent):void{
		if(event.detail == Alert.YES){
			productRemote.remove(pro);
		}
	});
}

private function showProduct():void{
	
	if(gridProduct.selectedItem == null){
		//Aqui é informada a mensagem que será mostrada ao usuário e o título da mensagem
		WindowsMessage.alarmWithTitle("Ops, selecione um produto para visualizá-lo.","Visualização");
		
		//Esse return é para parar a execução do método, é como um break
		return;
	}
	this.currentState = "update";
	clearFields();
	product = gridProduct.selectedItem as ProductTO;
	
	fieldName.text = product.name;
	fieldPercentage.text = Utilitys.formatPercentage(product.percentage);
	fieldValue.text = Utilitys.formatCurrencyBR(product.value);
	
}



private function backSearch():void{
	findByName();
	this.currentState = "search";
}
private function newProduct():void{
	
	this.currentState = "create";
	bySearch = true;
	clearFields();
	product = null;
	
}

public function clearFields():void{
	
	fieldName.text = "";
	fieldPercentage.text = "0.00 %";
	fieldValue.text = "R$ 0.00";
	fieldName.setFocus();
}

public function formatCurrency(tf:TextInput):void{
	
	var temp:Number=Number(tf.text);
	
	tf.text = Utilitys.formatCurrencyBR(temp);
	
}

public function unformatCurrency(tf:TextInput):void{
	
	tf.text = Utilitys.unformat(tf.text);
	
}

public function formatPercentage(tf:TextInput):void{
	
	var tempP:Number=Number(tf.text);
	
	tf.text = Utilitys.formatPercentage(tempP);
	
}

public function unformatPercentage(tf:TextInput):void{
	
	tf.text = Utilitys.unformatPercentage(tf.text);
	
}

